import type { ResponseHandlerConfig } from '@/types/response'

/**
 * API响应状态码
 * @description 统一定义API响应的状态码及其含义
 */
export const responseCode = {
  /** 请求成功 */
  success: '000000',
  /** 未授权（未登录） */
  unauthorized: '000401',
  /** 禁止访问（无权限） */
  forbidden: '000403',
  /** 系统错误 */
  systemError: '000010',
  /** 登录错误 */
  loginPasswordError: '101401',
  /** 需要验证码 */
  needCaptcha: '101411',
  /** 验证错误 */
  errorCaptcha: '101115',
} as const

/**
 * API响应状态消息
 * @description 与状态码对应的提示信息
 */
export const responseMessage = {
  /** 默认错误提示 */
  default: '请求失败',
  /** 网络连接错误 */
  networkError: '网络错误',
  /** 请求超时 */
  timeout: '请求超时',
  /** 未登录提示 */
  unauthorized: '请先登录',
  /** 无权限提示 */
  forbidden: '无访问权限',
  /** 系统错误提示 */
  systemError: '系统错误，请稍后重试',
} as const

/** 响应状态码类型 */
export type ResponseCode = (typeof responseCode)[keyof typeof responseCode]

/**
 * 响应状态处理映射
 * @description 配置每个状态码对应的处理方式
 */
export const responseHandlerMap: Partial<Record<ResponseCode, ResponseHandlerConfig>> = {
  [responseCode.unauthorized]: {
    message: responseMessage.unauthorized,
    redirect: '/login',
  },
  [responseCode.forbidden]: {
    message: responseMessage.forbidden,
  },
  [responseCode.systemError]: {
    message: responseMessage.systemError,
  },
} as const
